package com.sacfa.panels;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collection;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

import com.sacfa.jframes.Principal;
import com.sacfa.jframes.RecursosHumanos;
import com.sacfa.rrhh.beans.Empleado;
import com.sacfa.rrhh.bo.EmpleadoBo;

@SuppressWarnings("serial")
public class ConsultaGEmpleados extends JPanel {
	private Collection<Empleado> empleados = new ArrayList<Empleado>();
	private int alto;
    private final int filas = 10;
    private String[] columnas = {"Nombre","Apellido Paterno","Apellido Materno","Salario"};
    private String[][] data = null;
    
    private Dimension dimension;
    private JButton siguiente;
    private JButton anterior;
    private JScrollBar barra;
    private JScrollPane spPaginacion = null;
    private JTable tabla = null;
    
	public ConsultaGEmpleados(){
		setBackground(Color.LIGHT_GRAY);
		setSize(522, 369);
		
		anterior = new JButton("Anterior");
		anterior.setBounds(138, 281, 100, 30);
		anterior.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt) {
                alto = tabla.getRowHeight() * (filas-1);
                barra = spPaginacion.getVerticalScrollBar();
                barra.setValue( barra.getValue() - alto );
            }
        });
		setLayout(null);
		add(anterior);
		
        siguiente = new JButton("Siguiente");
        siguiente.setBounds(281, 281, 100, 30);
        siguiente.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt) {
                alto = tabla.getRowHeight() * (filas - 1);
                barra = spPaginacion.getVerticalScrollBar();
                barra.setValue( barra.getValue() + alto );
            }
        });
        add(siguiente);
        
        traerDatos();
        
        tabla = new JTable(new DefaultTableModel(data, columnas));
        tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tabla.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
		tabla.setColumnSelectionAllowed(false);
		tabla.setRowSelectionAllowed(false);
        
        spPaginacion = new JScrollPane(tabla, JScrollPane.VERTICAL_SCROLLBAR_NEVER,
        		JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        spPaginacion.setBounds(20, 35, 474, 235);
        dimension = tabla.getPreferredSize();
        spPaginacion.setPreferredSize(new Dimension(dimension.width, tabla.getRowHeight() * filas));
        add(spPaginacion);
        
        JButton button = new JButton("<< SALIR >>");
        button.addActionListener(new ActionListener() {
        	public void actionPerformed(ActionEvent e) {
        		Principal principal = Principal.getInstance();
				principal.setVisible(true);
				RecursosHumanos recursosHumanos = RecursosHumanos.getInstance();
				recursosHumanos.setVisible(false);
				limpiar();
        	}
        });
        button.setBounds(212, 322, 100, 30);
        add(button);
	}
	
	private void limpiar(){
		RecursosHumanos recursosHumanos = RecursosHumanos.getInstance();
		recursosHumanos.remove(this);
	}
	
	private void traerDatos(){
		EmpleadoBo empleadoBo = new EmpleadoBo();
		empleados = empleadoBo.consultaGeneral();
		
		if(empleados.size() > 0){
			data = new String[empleados.size()][columnas.length];
			String[] valores = new String[empleados.size() * columnas.length];
			int cont = 0;
			for(Empleado e : empleados){
				valores[cont] = e.getNombre();
				valores[cont+1] = e.getApellidoPaterno();
				valores[cont+2] = e.getApellidoMaterno();
				valores[cont+3] = e.getSalarioXHora().toString();
				cont = cont + 4;
			}
			for (int x = 0; x < data.length; x++) {
	            for (int y = 0; y < data[0].length; y++) {
	                data[x][y] = new String(valores[y]);
	            }
	        }
		}
	}
}
